"""
鸭子类型和多态
"""


class Cat(object):
    def say(self):
        print("cat")


class Dog(object):
    def say(self):
        print("dog")


class Duck(object):
    def say(self):
        print("duck")


def use_extend():
    """
    鸭子类型使用示例
    """

    user_list = ["Kevin", "葛小伦"]
    other_user_list = ["天使彦", "天使冷"]
    user_tuple = ("蔷薇",)
    user_set = set()
    user_set.add("赵信")
    user_set.add("死神卡尔")
    user_set.add("莫甘娜")

    # 使用extend（可迭代iterable）
    user_list.extend(other_user_list)
    user_list.extend(user_tuple)
    user_list.extend(user_set)
    print(user_list)
    # 输出结果：
    """
    ['Kevin', '葛小伦', '天使彦', '天使冷', '蔷薇', '赵信', '莫甘娜', '死神卡尔']
    """


if __name__ == '__main__':
    # python实现的多态（实现共同的方法名）
    animal_list = [Cat, Dog, Duck]
    for animal in animal_list:
        animal().say()
    # 输出结果：
    """
    cat
    dog
    duck
    """

    use_extend()
